/**
 * @Author       : Hejh(3010733382@qq.com)
 * @Version      : V1.0
 * @Date         : 2024-01-14 20:33:43
 * @Description  : 角色-权限的映射实体模型
 */

const { DataTypes, Model } = require('sequelize')
const { generatId, formatReturnId } = require('@/utils/idUtil')
const Mysequelize = require('./index')
const baseModel = require('./baseModel')

class RolePermission extends Model {}
RolePermission.init(
  {
    id: {
      type: DataTypes.BIGINT,
      defaultValue: generatId(),
      primaryKey: true,
      allowNull: false,
      get() {
        return formatReturnId(this.getDataValue('id'))
      },
      set(value) {
        this.setDataValue('id', BigInt(value))
      }
    },
    roleId: {
      type: DataTypes.BIGINT,
      allowNull: false,
      get() {
        return formatReturnId(this.getDataValue('roleId'))
      },
      set(value) {
        this.setDataValue('roleId', BigInt(value))
      },
      field: 'role_id'
    },
    permissionId: {
      type: DataTypes.BIGINT,
      allowNull: false,
      get() {
        return formatReturnId(this.getDataValue('permissionId'))
      },
      set(value) {
        this.setDataValue('permissionId', BigInt(value))
      },
      field: 'permission_id'
    },
    ...baseModel
  },
  {
    // 这是其他模型参数
    sequelize: Mysequelize, // 我们需要传递连接实例
    modelName: 'RolePermission', // 我们需要选择模型名称
    tableName: 'role_permission', // 数据库表名称
    createdAt: 'createTime',
    // 想要 updatedAt 但是希望名称叫做 updateTime
    updatedAt: 'updateTime'
  }
)

// 定义的模型是类本身
// console.log(WpFile === sequelize.models.WpFile); // true
module.exports = RolePermission
